package src.itheima04;

import java.util.ArrayList;

/*
    泛型的好处:
    1.避免强制类型转换的麻烦
    2.将运行时异常,提前到了编译时期,降低了程序员的工作量
    3.一旦指定泛型,数据类型将被统一
    4.实现代码的模板化,把数据类型当做参数传递

    泛型可以定义在哪些位置
    1.可以定义在类上
    2.可以定义在接口上
    3.可以定义在方法上
 */
/*public class Demo04Generic {
    public static void main(String[] args) {
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("AAA");
        list1.add("BBB");
        list1.add("CCC");
        //list1.add(1000);//2.将运行时异常,提前到了编译时期,降低了程序员的工作量


        //增强for
        for (String str : list1) {
            //1.避免强制类型转换的麻烦
            System.out.println("字符串:"+str+"的长度: "+str.length());
        }
        System.out.println("---------");

        ArrayList list2 = new ArrayList();
        list2.add("AAA");
        list2.add("BBB");
        list2.add("CCC");
        //list2.add(1000);//添加时,没有错误,但是运行时,遍历中强制转换成String,报出运行时期的类型转换异常

        //增强for
        for (Object obj : list2) {
            System.out.println("字符串:"+obj+"的长度: "+((String)obj).length());
        }

    }
}*/
public class Demo04Generic {
    public static void main(String[] args) {
    /*ArrayList arrayList=new ArrayList();
    arrayList.add("1");
    arrayList.add("2");
    arrayList.add("3");

        for (Object o : arrayList) {
            System.out.println(((String)o).length());
        }

        ArrayList arrayList1=new ArrayList();
        arrayList1.add("1213");
        arrayList1.add("1");
        arrayList1.add("21");

        for (Object o : arrayList1) {
            System.out.println(o.toString().length());
        }
*/
        ArrayList<String> arrayList2=new ArrayList();
        arrayList2.add("12121334");
        arrayList2.add("2455");
        arrayList2.add("21323");
        for (String s : arrayList2) {
            System.out.println(s.length());
        }
  }
}